package com.zhang.family_doctor.service;

import com.zhang.family_doctor.dto.ResidentDto;
import com.zhang.family_doctor.dto.ResidentFilesDto;
import com.zhang.family_doctor.entity.MemberFamily;
import com.zhang.family_doctor.entity.R;
import com.zhang.family_doctor.entity.Resident;
import com.zhang.family_doctor.entity.ResidentHealth;
import com.zhang.family_doctor.vo.ResidentVO;

import javax.servlet.http.HttpServletRequest;
import java.util.Map;

public interface ResidentService {

    /**
     * 发送验证码接口
     * @param phone
     * @return
     */
    R<String> sendMsg(String phone);

    /**
     * 注册居民
     * @param resident
     * @return
     */
    R<Map<String, Object>> register(Resident resident);

    /**
     * 新建居民档案
     * @param resident
     * @return
     */

    R<String> newFile(Resident resident, HttpServletRequest request);

    /**
     * 居民账号密码登录
     * @param phone
     * @param password
     * @return
     */
    R login(String phone, String password);

    /**
     * 居民免登录
     * @param phone
     * @param code
     * @return
     */
    R noLogin(String phone, String code);

    /**
     * 忘记密码
     * @param residentVO
     * @return
     */
    R forgotPassword(ResidentVO residentVO);

    /**
     *补全或更新居民信息
     * @param residentDto
     * @param request
     * @return
     */
    R<String> completionOrUpdate(ResidentDto residentDto, HttpServletRequest request);

    /**
     * 根据token中的居民id查询居民基础信息
     * @param request
     * @return
     */
    R<Resident> getResidentById(HttpServletRequest request);

    /**
     * 根据token中的居民id查询居民健康信息
     * @param request
     * @return
     */
    R<ResidentHealth> getResidentHealthByResidentId(HttpServletRequest request);

    /**
     * 居民新增家庭成员
     * @param memberFamily
     * @param request
     * @return
     */
    R<String> addMemberFamily(MemberFamily memberFamily, HttpServletRequest request);

    /**
     * 修改默认
     * @param id
     * @param setDefault
     * @param request
     * @return
     */
    R<String> setDefault(Integer id, Integer setDefault, HttpServletRequest request);

    /**
     * 后台新建居民档案基本信息
     * @param residentFilesDto
     * @return
     */
    R<String> backgroundNewResidentFiles(ResidentFilesDto residentFilesDto);

    /**
     * 后台新建完善的居民档案
     * @param residentFilesDto
     * @return
     */
    R<String> improveResidentArchives(ResidentFilesDto residentFilesDto);

    /**
     * 后台修改居民信息
     * @param residentFilesDto
     * @return
     */
    R<String> updateResident(ResidentFilesDto residentFilesDto);
}
